其他
如何使用 .NET Core 安全地加/解密文件
256字节RSA加密后的AES密钥
16字节初始化向量
AES加密的文件数据
解密方首先读取并使用RSA私钥解密出AES密钥,再用AES密钥解密出实际的文件数据。
实现
(byte[] aesKey, byte[] aesIV) = AesHelper.Create();
using (var origFileStream = File.OpenRead("原始文件"))
{
using (var encryptFileStream = File.Create("加密文件"))
{
await encryptFileStream.WriteAsync(RSAHelper.Encrypt(aesKey));
await encryptFileStream.WriteAsync(aesIV);
using (var cryptoStream = AesHelper.CreateWriteStream(encryptFileStream, aesKey, aesIV))
{
await origFileStream.CopyToAsync(cryptoStream);
}
}
}
然后是解密代码:
using (var decryptFileStream = File.OpenRead("解密文件"))
{
using (var encryptFileStream = File.OpenRead("加密文件"))
{
var aesKeyData = new byte[256];
await encryptFileStream.ReadAsync(aesKeyData, 0, aesKeyData.Length);
var aesKey = RSAHelper.Decrypt(aesKeyData);
var aesIVData = new byte[16];
await encryptFileStream.ReadAsync(aesIVData, 0, aesIVData.Length);
var aesIV = aesIVData;
using (var cryptoStream = AesHelper.CreateReadStream(encryptFileStream, aesKey, aesIV))
{
await cryptoStream.CopyToAsync(decryptFileStream);
}
}
}
结论
通过使用RSA+AES,同时保证了密钥和数据的安全性。如果你也碰到了类似需求,不妨试试本文的实现方案。
- EOF -
看完本文有收获?请转发分享给更多人
推荐关注「DotNet」,提升.Net技能
点赞和在看就是最大的支持❤️